package com.ynet.middleground.contract.bean;

import java.util.List;
import java.util.Map;

import javax.validation.Valid;
import javax.validation.constraints.NotNull;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * @author yangbh
 * @description 修改档案请求
 */
@Data
@ApiModel(value = "修改档案请求对象", description = "修改档案请求对象")
public class EditArchiveReq extends EnterpriseBaseReqObj {

    private static final long serialVersionUID = -3701170860104184926L;

    @ApiModelProperty(value = "业态公司 id \n（仅综合管理平台使用）", notes = "业态公司 id \n（仅综合管理平台使用）", dataType = "Integer")
    private Integer formatId;

    /**
     * 档案id
     */
    @ApiModelProperty(value = "档案id", notes = "档案id", required = true, dataType = "Integer")
    @NotNull(message = "档案id不能为空")
    private Integer id;

    /**
     * 文件名
     */
    @ApiModelProperty(value = "文件名", notes = "文件名", dataType = "String")
    private String name;

    /**
     * 地址URl
     */
    @ApiModelProperty(value = "短路径地址(包含 Bucket) \n  如：zhongtai/file.pdf",
        notes = "短路径地址(包含 Bucket) \n  如：zhongtai/file.pdf", dataType = "String")
    private String url;

    /**
     * 描述备注
     */
    @ApiModelProperty(value = "描述备注", notes = "描述备注", dataType = "String")
    private String description;

    /**
     * 产品类型
     */
    @ApiModelProperty(value = "产品类型", notes = "产品类型", dataType = "String")
    private String productType;

    /**
     * 合约类型的编号
     */
    @ApiModelProperty(value = "合约类型的编号", notes = "合约类型的编号", dataType = "String")
    private String contractTypeCode;

    /**
     * 确认提交时间
     */
    @ApiModelProperty(value = "提交时间 格式：yyyy-MM-dd HH:mm:ss", notes = "提交时间 格式：yyyy-MM-dd HH:mm:ss", dataType = "String")
    private String submissionDate;

    /**
     * 模板id
     */
    @ApiModelProperty(value = "使用模板生成档案(重新生成后文件的地址会覆盖原 url 地址)", notes = "使用模板生成档案(重新生成后文件的地址会覆盖原 url 地址)",
        dataType = "Integer")
    private Integer templateId;

    /**
     * 模板渲染参数
     */
    @ApiModelProperty(value = "模板渲染参数，根据模版参数规则上送\n\n" + "如需要单元格合并，在对应的表格内容里添加合并标记：\n"
        + "    垂直合并，在内容后添加：#m.tag.row#  如：1500#m.tag.row#\n    水平合并，在内容前添加：#m.tag.col#   如：#m.tag.col#1000"
        + "\n\n注意：同一个单元格内容仅可选择一种合并方式，垂直合并、水平合并无法同时使用", notes = "", dataType = "java.util.Map")
    private Map parameter;

    /**
     * 表格合并单元格参数
     */
    @Valid
    @ApiModelProperty(value = "表格合并单元格参数", notes = "表格合并单元格参数")
    private List<MergeCellTableInfo> tableMergeCells;

}
